Business entities require business software for performing an array of essential tasks. Communication, planning, inventory control, order processing, systems monitoring, and nearly every facet of a business' operations. A business entity often requires a software solution with features, interfaces, data management, and other aspects unique to that one specific company. Yet, core functions may be similar among the different unique solutions. These core functions may be provided to several, unique business entities, e.g., companies. In addition to needing to vary several initial deployments among a variety of customer-companies, these varied implementations may need constant updating, to evolve with the evolving business' needs.
Software developers may design and provide a set of software tools in a generic or universal form. These tools may be controlled by a set of customization data that is specific to each unique customer. Unlike the companies transactional data, which may include millions of data records or more, the configuration and customization data may represent a very small and rarely changing set of data. This data may modify, instantiate, activate, or otherwise implement the provided tools, in a customer specific manner. With the configuration data, customers may be able to modify every aspect of their software experience, including defining the user interfaces, what functions are available on the interfaces, and/or what fields are provided to the user.
The configuration data module of business software suits may also facilitate a software enhancement package strategy to simplify the way customers manage and deploy new software functionality. Customers may selectively implement enhancement software functions (e.g., as included in the enhancement package) and activate the software upon business demand. As a result, customers may be able to isolate the impact of software updates from introducing/rolling out new functionality and bring new functionality online faster through shortened testing cycles.
The enhancement package model may deliver innovations through the enhancement packages approximately every 9 to 12 months. Customers would no longer have to plan for major releases every five years. They could choose to selectively implement the business functions or technical improvements that add the value that matters most to their business. Software developers may use enhancement packages to quickly and easily deliver business and industry-specific functionality, enterprise services, and other functions that help improve and simplify the use of existing software packages, through user interface and other end-to-end process improvements.
A software enhancement package may include a set of enhanced functionality that may be integrated into an existing software suite. Each enhancement package may contain new versions of existing software components and/or completely new functions. Each change to the functions in a system has the potential for customer disruption. In order to minimize disruption and increase customer acceptance, a switch framework may also be provided, including a switch status table. Using this framework, enhanced functions (e.g., those in the enhancement packages) may be delivered in an inactive form. Then, within the enhancement packages, customers may choose which software components should be updated in their systems depending on the new/extended functionality they want to use.
In enhancement package contexts, it may be the case that new functionality must be explicitly switched on to become active/visible in the system. A core unit of functionality within the system, and as described herein, may be referred to as a business function. The business function may also be the core unit within an enhancement package that can be activated/switched on. Activating a business function may trigger the associated switches, which may then influence the execution of the code enhancements. These switches may ensure that customers only see and make use of the new functionality if they have activated them. The activation process may also start a job (e.g., a batch-job or cron-job, etc.) in the particular example system that automatically performs all changes in that system.
Embodiments of the present invention concern further improvements in the enhancement package model. Currently, by virtue of the switch framework, delivery of enhancement packages do not cause disruption, and customers may select only those functions they want, limiting disruption to those specific enhancements. However, the enhancements often overwrite configuration data, adding functions, changing functions, deleting/replacing functions, etc. The disruption to the system caused by these activations cannot easily be assessed before installation, and there is no way currently to reverse the installation in a cost/time effective manner. Thus, example embodiments of the present invention relate to additional procedures, functions, and systems for facilitating a reversal of enhancement activations.